#ifndef __REDISCLIENT_H__
#define __REDISCLIENT_H__

#include <sw/redis++/redis++.h>
#include <pthread.h>
#include <string>

using namespace sw::redis;
using namespace std;

class RedisClient
{
public:
    static RedisClient *getInstance();
    string get(const string &key);
    void set(const string &key, const string &value);

private:
    RedisClient(const string &host, int port, size_t pool_size);
    ~RedisClient();
    static void init_r();
    static void destory();

private:
    string _host;             // Redis 服务器地址
    int _port;                // Redis 服务器端口
    size_t _pool_size;        // 连接池大小
    unique_ptr<Redis> _redis; // Redis 客户端

    static RedisClient *_pInstance;
    static pthread_once_t _once;
};

#endif